package py.cursoweb.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import py.cursoweb.model.Producto;

public class ProductoABM extends HttpServlet {
	private static final long serialVersionUID = 1L;
    /**
     * @see HttpServlet#HttpServlet()
     */
    public ProductoABM() {
        super();
    }

	/** 
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//procesarPeticion(request, response);
		ProveedorManager provManager = new ProveedorManager();
		
		String accion = request.getParameter("accion");
		if ("get".equals(accion)) {
			ProductoManager prodManager = new ProductoManager();
			try {
				Integer id = Integer.parseInt(request.getParameter("id"));
				request.setAttribute("producto", prodManager.getProducto(id));
				request.setAttribute("listaProveedores", provManager.getProveedores());
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/jsp/productoMod.jsp");
			dispatcher.forward(request,response);
		} else {
			try {
				request.setAttribute("listaProveedores", provManager.getProveedores());
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/jsp/productoABM.jsp");
			dispatcher.forward(request,response);
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		procesarPeticion(request, response);
		ProductoManager manager = new ProductoManager();
		//ProveedorManager provManager = new ProveedorManager();
				
		//if ("todos".equals(operacion)) {
			//mostrar lista de todos los alumnos
			try {
				request.setAttribute("listaProductos", manager.getProductos());
				//request.setAttribute("listaProveedoresProd", provManager.getProveedores());
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			//llamarPagina(request,response,"/listaProductos.jsp");
		//}
		RequestDispatcher dispatcher = getServletContext().getRequestDispatcher("/jsp/listaProductos.jsp");
		dispatcher.forward(request,response);
	}

	protected void procesarPeticion(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String accion = request.getParameter("accion");
		Integer id = Integer.parseInt(request.getParameter("id"));
		
		Producto producto = new Producto();
		
		ProductoManager mgr = new ProductoManager();
		PrintWriter pw = response.getWriter();
		
		if (!"b".equals(accion)) {
			String nombre = request.getParameter("nombre");
			String descripcion = request.getParameter("descripcion");
			Integer precio = Integer.parseInt(request.getParameter("precio"));
			Integer proveedor = Integer.parseInt(request.getParameter("proveedor"));
			Integer cantidad = Integer.parseInt(request.getParameter("cantidad"));
				
			producto.setId(id);
			producto.setNombre(nombre);
			producto.setDescripcion(descripcion);
			producto.setPrecio(precio);
			producto.setProveedor(new ProveedorManager().getProveedor(proveedor));
			producto.setCantidad(cantidad);
		} else
			producto = mgr.getProducto(id);
			
		try {
			if ("a".equals(accion)) {
				mgr.saveProducto(producto);
				//pw.println("PRODUCTO GUARDADO EXITOSAMENTE!");
			}else if ("m".equals(accion)) {
				mgr.saveProducto(producto);
				//pw.println("PRODUCTO MODIFICADO EXITOSAMENTE!");
			} else if ("b".equals(accion)) {
				mgr.deleteProducto(producto);
				//pw.println("PRODUCTO ELIMINADO EXITOSAMENTE!");
			}		
			
		}catch(Exception ex) {
			pw.println("OCURRIO EL ERROR: " + ex.getClass().getName() + 
					   " - " + ex.getMessage());
		}
	}

}
